﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using PSE.Framework.Configuration;

namespace PSE.Framework.Common.Security.Services.Configuration
{
    public class EndpointConfigurationElement : BaseConfigurationElement
    {
        // Contador interno para nomear unicamente o Element, já que ele faz parte da classe
        // base requerida para usar o ConfigFileLoader, mas o element para endpoint não usa o Name
        // Se name ficar sem preencher, será vazio e isto gera exceção de duplicidade
        private static int _nameCount = 1;

        public EndpointConfigurationElement()
        {
            // Atribui valor único para Name 
            this.Name = (_nameCount++).ToString();
        }

        [ConfigurationProperty("contract")]
        public String Contract
        {
            get
            { return (String)this["contract"]; }
            set
            {
                this["contract"] = value;
            }
        }

        [ConfigurationProperty("protocol")]
        public String Protocol
        {
            get
            { return (String)this["protocol"]; }
            set
            { this["protocol"] = value; }
        }

        /// <summary>
        /// Caminho do arquivo de configuracao
        /// </summary>
        [ConfigurationProperty("endpointConfigFile")]
        public String EndpointConfigFile
        {
            get
            {
                return (String)this["endpointConfigFile"];
            }
            set
            {
                this["endpointConfigFile"] = value;
            }
        }
    }
}
